Computers are used in many applications. As computing systems continue to evolve, the graphical display requirements of the systems become more demanding. This is especially true in applications where detailed graphical displays must be updated quickly. One example of such an application is a computer game where movement and modification of background images may place great demands on the processing power of the computing system.
In order to display some screen images, detailed textures are stored in memory. These textures are then molded and adapted to overlay or map to structures for display. An example is a brick pattern that would be mapped onto a wall structure, where if the wall is extending into the distance, the texture will be mapped in such a way to show perspective.
In video graphics systems, draw commands are interspersed with changes in textures. In other words, a number of draw commands may be executed that use a first texture, and then a new texture may be loaded for a second set of draw commands. In order to avoid corrupting these drawing operations, the processor may be forced to wait for some of these commands to be executed by a graphics processor that is part of the system. When the processor is forced to wait for the graphics processor to complete a drawing command or texture load, the efficiency of the system is compromised. Delays experienced by the processor translate into overall slowdowns in the execution of the program.
Consequently, a need exists for a system that allows the processor to transfer drawing commands and texture changes to the graphics processor in a faster, more efficient manner.